package utils
{
	/**
	 * 位操作,运算工具
	 *@date 2016-7-25 上午11:00:41
	 *@author zhouhonghui
	 */
	public class BitUtils
	{
		public function BitUtils()
		{
		}
		/**
		 * 获取第几位的值是0还是1  
		 * @param input 要获取的值
		 * @param index 第几位 从0开始(最右边算起(低位算起))
		 * @return 
		 * 
		 */		
		public static function getBitValue(input:int,index:int):int
		{
			//原理：想看哪一位是1就把第几位设置为1，其他设置为0，同input进行与操作，返回，大于0则是1，==0则是0.				
			//左移操作把该位变为1其余为0
			var bitVal:int = (1 << index ); 
			var optVal:int = (input &  bitVal); //进行and操作,因为and操作是只有两者为1才为1
			return optVal > 0 ? 1 : 0;
		}
		public static function isBitTrue(input:int,index:int):Boolean
		{
			
			return getBitValue(input,index)==1;
		}
		//取一个64位的低32位
		public static function get64IntLower(uint64:Number):uint
		{
			var big:Number=Math.pow(2,32)
			return uint64%big;
		}
		//取一个64位的高32位
		public static function get64IntHight(uint64:Number):uint
		{
			var big:Number=Math.pow(2,32)
			return uint64/big;
		}
	}
}